package com.example.demo.Controller;

import com.example.demo.model.UserInfo;
import org.apache.catalina.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.jws.soap.SOAPBinding;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: H_tao_X
 * Date: 2022-11-27
 * Time: 15:11
 */
@Controller
@ResponseBody // 作用：表示的是返回一个非静态页面的数据
@RequestMapping("/user") // 类上面的 RequestMapping 可以省略
public class UserController {

    @RequestMapping("/sayhi") // 方法上面的 RequestMapping 不能省略
    public String sayHi() {
        return "你好，哈哈";
    }

    // 让 @RequestMapping 只支持某种类型的请求
    @RequestMapping(method = RequestMethod.POST,value = "/sayhi2")
    public String sayHi2() {
        return "hello，world";
    }

    // 使用 @POSTMapping("/xxx") 来获取用户和程序之前的映射

    @PostMapping("/sayhi3")
    public String sayHi3() {
        return "使用其他方法来获取映射，呵呵";
    }

    /**
     * 只支持 GET 类型的访问方式
     */

    @GetMapping("/sayhi4")
    public String sayHi4() {
        return "平安";
    }

    /**
     * 服务器获取 用户其请求参数
     */

    @RequestMapping("/getuserbyid")
    // 1. 返回 UserInfo 通过 Id 获取 User信息
    public UserInfo getUserById(Integer id){ // 此参数一定要和前端传递的参数名保持一致
        // 否则就获取不到参数的值了
        // 不查数据库，伪代码，返回用户对象
        UserInfo userInfo = new UserInfo();
        // 进行非空效验
        userInfo.setId(id == null ? 0 : id);
        userInfo.setUsername("张三");
        userInfo.setAge(18);
        return userInfo;
    }

    @RequestMapping("/getuserbyid2")
    public UserInfo getUserById2(Integer id) {
        UserInfo userInfo = new UserInfo();
        userInfo.setId(id == null ? 0 : id);
        userInfo.setUsername("李四");
        userInfo.setAge(22);
        return userInfo;
    }

    /**
     * 获取多个参数
     */
    @RequestMapping("/login")
    public String login(@RequestParam(value = "name",required = false)String username,String password) {
        return "账号: | " + username + "密码: |" + password;
    }
    /**
     * 获取一个对象
     */
    // 加上 @RequestBody 注解 服务器就能接收 json 数据
    @RequestMapping("/reg")
    public String reg(@RequestBody UserInfo userInfo) {
        return "用户信息" + userInfo;
    }

    /**
     * 获取 URL 地址中的参数
     */
    @RequestMapping("/hero/{id}/{name}")
    public String getHeroInfo(@PathVariable Integer id,@PathVariable String name) {
        return "ID: " + id + "| Name: "  + name;
    }

}
